
import CryptoJS from 'crypto-js'
import qs from 'qs'
function uuid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";

    var uuid = s.join("");
    return uuid;
}
function jsonToUrlParams(jsonObj: any) {
    // 提取键值对，并转换为数组，然后排序
    // let entries = Object.entries(jsonObj).sort((a, b) => a[0].localeCompare(b[0]));

    // // 使用URLSearchParams构建查询字符串
    // const searchParams = new URLSearchParams(entries);
    // return searchParams.toString();

    return qs.stringify(jsonObj, {
        encode: true,
        sort: function (a, b) {

            return a.localeCompare(b); // 根据键的字典序排序
        }
    })
}

function makeSign(data: any, nonce?: string, timestamp?: number) {
    let signStr = '';
    if (data != undefined) {
        signStr = jsonToUrlParams(data);
    }
    signStr += '&nonce=' + nonce + '&timestamp=' + timestamp;
    console.log(signStr);

    // 签名
    const key = '1234567890'
    const hash = CryptoJS.HmacSHA256(signStr, key)
    const signature = hash.toString()
    return signature;
}

export {
    uuid,
    makeSign
}